//这是直接打15阶的   书上可以自己选打几阶的，原理一样；
//魔方阵就是以第一行的最中间作为起点1，然后往右上角的位置依次加1；     i=i-1;j=j+1;
//三个注意：1，到了边界怎么走；2，魔方阵的最右上角，这个位置的下一个
//数在他的下面；3，下个位置已经有数之后，新的位置在原来数的下面
//答案那个代码真能敲出15阶的魔方阵？  数组不会不够?   
//答案那个代码里的i  没有初始定义，i=i+1；  i都没定义算个鸡脖
//有空抄抄答案 虽然可能永远不会







#include <stdio.h>
int main()
{
    int a[16][16];
    int i;
    int j;
    for(i=1;i<=15;i++)
    {
        for(j=1;j<=15;j++)
        {
            a[i][j]=0;
        }
    }
    j=15/2+1;
    a[1][j]=1;
    i=1;
    int k;
    for(k=2;k<=15*15;k++)
    {
        i=i-1;
        j=j+1;
        if(i<1&&j>15)
        {
            i=i+2;
            j=j-1;
        }
        if(i<1)
        {
            i=15;
        }
        if(j>15)
        {
            j=1;
        }
        if(a[i][j]==0)
        {
            a[i][j]=k;
        }
        else
        {
            i=i+2;
            j=j-1;
            a[i][j]=k;
        }
    }
    for(i=1;i<=15;i++)
    {
        for(j=1;j<=15;j++)
        {
            printf("%5d",a[i][j]);
        }
       printf("\n");
    }
return 0;
}